function logParameter(target: any, propertyName: string, index: number) {
  console.log("logParameter");

  console.log(target);
  console.log(propertyName);
  console.log(index);

  const originalFn = target[propertyName];
  target.marker = "marker";

  /* 实测无用 */
  target[propertyName] = function (...args: any[]) {
    console.log("sayHello called!");
    return originalFn.apply(this, args);
  };

}

class Employee {
  sayHello(@logParameter message: string): void {
    console.log(`hello ${message}`);
  }
}

const xmz = new Employee();
console.log((xmz as any).__proto__);
(xmz as any).__proto__.sayHello.call(xmz, "boss");

xmz.sayHello("老大1");
xmz.sayHello("老大2");
xmz.sayHello("老大3");
